import { getVisitDetail, getVisitFileUrl } from '../../../utils/visit';
Page({
  data: {
    visitData: null,
    visitId: '',
    address: '',
    isLoading: true
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.loadVisitDetail(this.data.visitId);
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    if (options.id) {
      this.setData({
        visitId: options.id
      });
      this.loadVisitDetail(options.id);
    } else {
      wx.showToast({
        title: '未指定探访记录',
        icon: 'error',
        duration: 2000
      });
      setTimeout(() => {
        wx.navigateBack();
      }, 2000);
    }
  },
  //下载探访文件
  downloadVisitFile: function (e) {
    const filekey = e.currentTarget.dataset.filekey;
    console.log(filekey);

    // 显示加载提示
    wx.showLoading({
      title: '文件下载中...',
      mask: true
    });

    const data = { 'photokey': filekey }
    getVisitFileUrl(data).then(res => {
      // console.log(res);
      if (!res.url) {
        wx.hideLoading();
        wx.showToast({
          title: '获取下载链接失败',
          icon: 'none',
          duration: 2000
        });
        return;
      }

      // 从URL中获取文件名
      const fileName = res.url.split('/').pop().split('?')[0];

      wx.downloadFile({
        url: res.url,
        success: (res) => {
          // console.log(res);
          wx.hideLoading();

          if (res.statusCode === 200) {
            // 根据文件扩展名判断文件类型
            const fileType = this.getFileType(fileName);

            if (fileType === 'image') {
              // 如果是图片，使用previewImage打开
              wx.previewImage({
                urls: [res.tempFilePath],
                current: res.tempFilePath,
                success: function () {
                  console.log('预览图片成功');
                },
                fail: function (err) {
                  console.error('预览图片失败', err);
                  wx.showToast({
                    title: '预览图片失败',
                    icon: 'none',
                    duration: 2000
                  });
                }
              });
            } else if (fileType === 'video') {
              // 如果是视频，打开视频播放
              wx.openVideoEditor({
                filePath: res.tempFilePath,
                mode: 'preview',
                success: function () {
                  console.log('预览视频成功');
                },
                fail: function () {
                  // 如果不支持视频编辑器预览，尝试保存到本地
                  const fileManager = wx.getFileSystemManager();
                  fileManager.saveFile({
                    tempFilePath: res.tempFilePath,
                    success: (saveRes) => {
                      console.log(saveRes, '视频已保存到本地');
                      wx.showToast({
                        title: '视频已保存，请手动打开',
                        icon: 'none',
                        duration: 2000
                      });
                    }
                  });
                }
              });
            } else {
              // 其他类型文件，使用openDocument
              wx.openDocument({
                filePath: res.tempFilePath,
                showMenu: true,
                success: function () {
                  console.log('打开文档成功');
                },
                fail: function (err) {
                  console.error('打开文档失败', err);
                  wx.showToast({
                    title: '无法预览此类型文件',
                    icon: 'none',
                    duration: 2000
                  });

                  // 如果无法直接预览，尝试保存到本地
                  const fileManager = wx.getFileSystemManager();
                  fileManager.saveFile({
                    tempFilePath: res.tempFilePath,
                    success: (saveRes) => {
                      console.log(saveRes, '文件已保存到本地');
                      wx.showToast({
                        title: '文件已保存，请手动打开',
                        icon: 'none',
                        duration: 2000
                      });
                    },
                    fail: (err) => {
                      console.error('保存文件失败', err);
                    }
                  });
                }
              });
            }
          } else {
            wx.showToast({
              title: '下载失败',
              icon: 'none',
              duration: 2000
            });
          }
        },
        fail: (err) => {
          console.log(err);
          wx.hideLoading();
          wx.showToast({
            title: '下载失败',
            icon: 'none',
            duration: 2000
          });
        }
      });
    }).catch(err => {
      console.error('获取文件URL失败', err);
      wx.hideLoading();
      wx.showToast({
        title: '获取文件失败',
        icon: 'none',
        duration: 2000
      });
    });
  },

  /**
   * 获取文件类型
   */
  getFileType: function (fileName) {
    const ext = fileName.split('.').pop().toLowerCase();

    const imageExts = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];
    const videoExts = ['mp4', 'mov', 'avi', 'wmv', 'flv', 'mkv'];
    const documentExts = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf', 'txt'];

    if (imageExts.includes(ext)) {
      return 'image';
    } else if (videoExts.includes(ext)) {
      return 'video';
    } else if (documentExts.includes(ext)) {
      return 'document';
    } else {
      return 'other';
    }
  },

  // 加载探访详细信息
  loadVisitDetail: function (id) {
    wx.showLoading({
      title: '加载中...',
    });

    // 这里应该是从API获取数据，这里模拟一些数据
    setTimeout(() => {
      getVisitDetail(id).then(res => {
        console.log(res);
        let address = '';
        //获取住址
        if (res.data.familyDetail.provinceName === res.data.familyDetail.municipalityName) {
          address = res.data.familyDetail.provinceName + ' ' + res.data.familyDetail.districtName + ' ' + res.data.familyDetail.townshipStreetsName;
        } else {
          address = res.data.familyDetail.provinceName + ' ' + res.data.familyDetail.municipalityName + ' ' + res.data.familyDetail.districtName + ' ' + res.data.familyDetail.townshipStreetsName;
        }
        this.setData({
          visitData: res.data,
          address: address,
          isLoading: false
        })
      })

      wx.hideLoading();
    }, 800);
  },

  // 复制探访编号
  // copyVisitNumber: function () {
  //   if (this.data.visitData && this.data.visitData.visitNumber) {
  //     wx.setClipboardData({
  //       data: this.data.visitData.visitNumber,
  //       success: function () {
  //         wx.showToast({
  //           title: '探访编号已复制',
  //           icon: 'success'
  //         });
  //       }
  //     });
  //   }
  // },

  // 分享
  shareVisit: function () {
    wx.showToast({
      title: '分享功能开发中',
      icon: 'none'
    });
  },

  // 打印
  printVisit: function () {
    wx.showToast({
      title: '打印功能开发中',
      icon: 'none'
    });
  },

  // 修改
  editVisit: function () {
    const visitId = this.data.visitId;
    wx.navigateTo({
      url: '/pages/visit/edit/edit?visitId=' + visitId,
      fail: function (err) {
        console.error('导航到编辑页面失败', err);
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none',
          duration: 1000
        });
      }
    });
  },

  // 删除探访记录
  deleteVisit: function () {
    wx.showToast({
      title: '您没有权限删除探访记录',
      icon: 'none'
    });
    // wx.showModal({
    //   title: '确认删除',
    //   content: '确定要删除该探访记录吗？此操作不可恢复。',
    //   confirmColor: '#FF4D4F',
    //   success: (res) => {
    //     if (res.confirm) {
    //       wx.showLoading({
    //         title: '删除中...',
    //       });

    //       // 这里应该是调用API删除数据，这里模拟删除过程
    //       setTimeout(() => {
    //         wx.hideLoading();
    //         wx.showToast({
    //           title: '删除成功',
    //           icon: 'success',
    //           duration: 2000
    //         });

    //         // 删除成功后返回上一页
    //         setTimeout(() => {
    //           wx.navigateBack();
    //         }, 2000);
    //       }, 1000);
    //     }
    //   }
    // });
  }
}); 